#ifndef _NEPTUNER_SUBMARINE_H_
#define _NEPTUNER_SUBMARINE_H_

#include "Funcalyzer.h"

#include<vector>
#include<string>

class Submarine
{
public:
	bool m_bNoHeading;
	bool m_bReport;
	bool m_bHTML;
	bool m_bListOnly;
	bool m_bModeQuiet;
	bool m_bNoNumbering;

	bool m_bComplexity;
	bool m_bCalls;
	bool m_bReturns;
	bool m_bDataUse;

	Funcalyzer* m_pxFuncalyzer;
	std::vector<std::string> m_asOutputRow;
	int m_nSerialNumber;

	void print();
	void printHeading(bool bClear=true);
	void printElement(bool bClear=true);
	void printFooting(bool bClear=true);
	void printBodyStart();
	void printBodyEnd();

	void outputReturns();
    void outputCalls();
	void outputDataUsage();
	void outputComplexity();

	Submarine(Funcalyzer* pxFuncalyzer)
	{
		m_pxFuncalyzer = pxFuncalyzer;
		m_nSerialNumber= 0;

		m_bNoHeading = false;
		m_bReport = false;
		m_bListOnly = false;
		m_bModeQuiet = false;
		m_bNoNumbering = false;
		m_bHTML = false;

		m_bDataUse = false;
		m_bCalls = false;
		m_bReturns = false;
		m_bComplexity = true; //default
	}
};

#endif

